Delivery route management and optimization

ABSTRACT

In some implementations, a method is performed by data processing apparatuses for managing and transmitting delivery route information. Data representing delivery routes is received, each delivery route including a sequence of scheduled delivery stops at locations within a geographic region, each delivery stop corresponding to orders that are scheduled for delivery. The delivery routes are classified into groups of delivery routes based on one or more criteria, and each group of delivery routes is assigned to a respective carrier entity. Respective portions of the data representing the delivery routes are transmitted to corresponding computing systems of the carrier entities assigned to the delivery routes. A carrier entity that has been assigned a group of delivery routes forwards individual delivery routes in the group of delivery routes to driver devices of individual drivers for execution of the individual delivery routes.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. application Ser. No.15/874,623, filed Jan. 18, 2018. The disclosures of the priorapplications are considered part of (and are incorporated by referencein) the disclosure of this application.

BACKGROUND

The present disclosure relates to delivery route management andoptimization.

Routing software may be used to help shippers plan delivery routes fordrivers that have been assigned delivery of various items. When a routeincludes multiple stops, for example, the routing software can determinean order for the stops based on criteria such as driving time anddistance. The routing software can then generate a map that includeseach of the stops, and can provide directions for navigating the route.

SUMMARY

This document generally describes computer systems, processes, programproducts, and devices for managing and optimizing delivery routes.

In some implementations, a method performed by data processingapparatuses includes identifying a first delivery route that includesdelivery stops at multiple locations within a first geographic region,and identifying a second delivery route that includes delivery stops atmultiple locations within a second geographic region. The first deliveryroute can be assigned to a first carrier that is designated to deliverorders within the first geographic region, and the second delivery routecan be assigned to a second carrier that is designated to deliver orderswithin the second geographic region. An additional order can then beidentified that is requested to be delivered to a location within thefirst geographic region while the first carrier is performing the firstdelivery route and the second carrier is performing the second deliveryroute. The data processing apparatuses can determine that a cost ofmodifying the second delivery route to include an additional deliverystop for the additional order is less than a cost of modifying the firstdelivery route to include the additional delivery stop for theadditional order, and in response, the second delivery route can bemodified to include the additional delivery stop for the additionalorder, including assigning the additional order to the second carriereven though the second carrier is designated to deliver orders withinthe second geographic region rather than the first geographic region.

In some implementations, a method performed by data processingapparatuses includes receiving, by a first computing systemcorresponding to a first entity, data representing multiple deliveryroutes, where each delivery route includes a sequence of scheduleddelivery stops at locations within a geographic region, and eachdelivery stop corresponds to one or more orders that have been scheduledfor delivery. The multiple delivery routes can be classified (e.g.,grouped) into multiple groups of delivery routes based on one or morecriteria, wherein at least one of the multiple groups of delivery routesincludes two or more delivery routes from among the multiple deliveryroutes. Each group of delivery routes can be assigned to a respectivecarrier entity, and at least two groups from among the multiple groupsof delivery routes can be assigned to different carrier entities. Thefirst computing system can transmit respective portions of the datarepresenting the multiple delivery routes to corresponding secondcomputing systems of the carrier entities assigned to the group ofdelivery routes. A first carrier entity that has been assigned a firstgroup of delivery routes can dispatch individual delivery routes in thefirst group of delivery routes to individual drivers to execute theindividual delivery routes.

Particular embodiments of the subject matter described in thisspecification may be implemented so as to realize one or more of thefollowing advantages. Routes can be generated before assigning theroutes to different carriers. The routes can potentially cross geographyboundaries of the different carriers, thus producing more efficientroutes than if the routes were generated after assigning the routes tothe carriers. Efficiencies can be discovered that would not be apparentif orders were assigned based solely on a primary geographic region of acarrier.

The details of one or more embodiments of the subject matter describedin this specification are set forth in the accompanying drawings and thedescription below. Other features, aspects, and potential advantages ofthe subject matter will become apparent from the description, thedrawings, and the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 is a conceptual diagram of an example system for generating andmanaging delivery routes.

FIG. 2 is a flowchart of an example technique for generating deliveryroutes.

FIG. 3 is a flowchart of an example technique for obtaining deliveryroutes in accordance with an adjusted request.

FIG. 4 is a flowchart of an example technique for generating modifieddelivery routes.

FIG. 5 shows an example mapping of delivery route information.

FIG. 6 is a flowchart of an example technique for transmitting andmanaging delivery route information.

FIG. 7 is a schematic diagram of a computing system that can be used inconnection with computer-implemented methods described in this document.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

This specification describes techniques for generating optimized routesby which a network of carriers can deliver orders to individual customerlocations. In particular, a retailer, or other entity, can receive a setof orders for goods that are to be delivered or picked up at variouslocations within a geographic region (e.g., a city or metropolitanarea). Each order is associated with a set of parameters and deliveryconstraints. The parameters of an order indicate pertinent informationsuch as pickup location, delivery location, and order size. The deliveryconstraints for an order define constraints for successful fulfillmentof the order such as acceptable delivery timeframes, target deliverydate, and special handling instructions.

A set of orders that have been entered into the retailer's ordermanagement system can be selected and provided to a routing engine thatgenerates one or more delivery routes that optimize one or more deliverycriteria, such as total distance traveled, total delivery costs, totaldelivery times, or a combination of these. A delivery route identifies asequence of stops for a driver to make to fulfill a subset of ordersthat have been assigned to the route (or to fulfill all orders ifmultiple routes are not necessary), and optionally can indicate targetarrival and departure times from each stop, and a path/turn-by-turndirections to navigate between each stop. The routing engine attempts tosatisfy as many delivery constraints associated with the orders aspossible, while complying with a set of routing constraints that limitthe capacity for delivering orders. The routing constraints can include,for example, a number of available drivers, available shift times forthe drivers, maximum number of orders per driver, and acceptablegeographic zones for each driver.

For example, a user may select in a graphical interface a set of norders to be delivered to customers' residences on a particular day. Theset of orders can be provided to a computer-based routing engine, alongwith a set of routing constraints manually set by a user orautomatically set by default or according to an algorithm. The routingconstraints may specify that m drivers are available during theparticular day to deliver the orders. If the number of drivers mprovides sufficient capacity, the routing engine will return two routesto allow all orders to be delivered between the m drivers. Each route isthen dispatched to a different driver. If the number of drivers m isinsufficient and the drivers cannot physically complete the deliverieswithin their shifts while satisfying the delivery constraints for theorders, the system may return an error and prompt a user to relaxdelivery constraints for one or more orders and/or may alert a user thatadditional capacity is required so the orders can be divided amongadditional routes. Appropriate remedial action may be taken, such asremoving orders from the list, selecting a different delivery mode forparticular orders, relaxing delivery constraints associated with theorders, adding additional drivers, or offering something of value tocustomers who are willing to relax the delivery constraints for theirorders.

In some cases, the retailer or shipping entity maintains partnershipswith multiple carrier organizations. Each carrier organization mayindependently operate a fleet of vehicles and hire drivers outside thecontrol of the principal retailer or shipping entity. Rather thandispatching routes to individual drivers, the retailer or shippingentity clusters or groups routes and assign groups of routes todifferent carrier organizations, which in turn manage dispatch of routesto individual drivers under their control. Some carrier organizationsmay reserve capacity for deliveries for a particular retailer orshipping entity, so as to ensure that the carrier has sufficientcapacity for an assigned route or group of routes. Some carriers mayshare their capacity among multiple retailers or shipping entities, andmay not reserve capacity for routes that have not yet been assigned.

FIG. 1 is a conceptual diagram of an example system 100 for generatingand managing delivery routes. The example system 100 includes a routingmanagement system 102 (e.g., including various peripheral devices 104for receiving input from system users and providing output to systemusers) that can provide an order request 114 for one or more orders 116to be selected from an orders database 110. In the present example, therouting management system 102 can submit a geographic coordinate request124 for addresses specified in the orders 116 to a geocoding engine 120,and can receive geographic coordinates 126 for the addresses in return.After receiving the geographic coordinates 126, for example, the routingmanagement system 102 can provide delivery information 134 for theorders 116 to a routing engine 130. The delivery information 134 caninclude corresponding geographic coordinates 126 for each of the orders116, can include additional order metadata that defines order anddelivery constraints, and can include various routing constraints. Inresponse to receiving the delivery information 134, for example, therouting engine 130 can provide to the routing management system 102route information 136 that includes one or more routes for fulfillingthe orders 116. The routing management system 102 can then use the routeinformation 136 to distribute various routes 146 among multiple carriercomputing systems (e.g., carrier computing systems 140 a and 140 b).Each of the carrier computing systems 140 a-b, for example, can be incommunication with one or more driver devices (e.g., carrier computingsystem 140 a being in communication with driver devices 142 a and 144 a,and carrier computing system 140 b being in communication with driverdevices 142 b and 144 b). The carrier computing systems 140 a-b, forexample, can each dispatch one or more routes to a respective driverdevice for use by its driver. The driver device 142 a, for example, canprovide an interface 150 which allows the driver to select a desiredroute from a queue of active available routes. As another example, thecarrier computing system 140 a can assign a route for the driver, andcan send route information that pertains to the assigned route to thedriver device 142 a.

The routing management system 102, the geocoding engine 120, the routingengine 130, and each of the carrier computing systems 140, for example,can each include one or more computer servers and one or more databases.For example, the routing management system 102 can be or include varioustypes of servers including, but not limited to, an application server, aweb server, a proxy server, or a server farm. In some implementations,two or more of the systems 102, 140, and/or engines 120, 130 may becombined. For example, the geocoding engine 120 may be combined with therouting engine 130 and/or one or more of the engines may be included inthe routing management system 102.

In the present example, the routing management system 102 can be incommunication with the geocoding engine 120, the routing engine 130, andeach of the carrier computing systems 140 over one or more network(s)160. Examples of the network(s) 160 include a local area network (LAN),a wide area network (WAN), and the Internet. Each of the carriercomputing systems 140 can also communicate with its respective driverdevices (e.g., the carrier computing system 140 a can communicate withdriver devices 142 a and 144 a, and the carrier computing system 140 bcan communicate with driver devices 142 b and 144 b) using thenetwork(s) 160, or using different networks. The driver devices 142 a,144 a, 142 b, 144 b, for example, can represent various forms ofprocessing devices including, but not limited to, a laptop computer, atablet computer, a handheld computer, a personal digital assistant(PDA), a smart phone, a smart watch, smart glasses, or a combination ofany two or more of these data processing devices or other suitable dataprocessing devices.

Operations performed within the example system 100 are described infurther detail with respect to the flowcharts shown in FIGS. 2, 3, 4,and 6.

FIG. 2 is a flowchart of an example technique 200 for generatingdelivery routes. The example technique 200 can be performed by any of avariety of appropriate systems, such as the system 100 (shown in FIG.1).

A batch of orders to be routed is selected (202). Referring to FIG. 1,for example, the routing management system 102 can generate orderrequest 114 (e.g., a database query), can submit the order request 114to the orders database 110 (e.g., a relational database, a file system,or another suitable type of database), and can receive orders 116 thatcorrespond to the order request 114 from the orders database 110. Eachof the orders 116, for example, can be for goods that are to bedelivered or picked up at various locations within a geographic region.

Order parameters and delivery constraints can be identified for eachorder (204). The order parameters, for example, can include informationfor the order such as pickup location, delivery location, order size(e.g., quantities of items included in the order), and other pertinentinformation. The delivery constraints for an order, for example, candefine constraints for successful fulfillment of the order such as adelivery time window for the order, a stop time for the order (e.g., anestimated amount of time to service the order), a priority level for theorder (e.g., high, medium, low), special handling instructions, andother appropriate constraints.

Optionally, orders may be geocoded to identify geographic coordinates ofpickup and delivery locations (206). For example, each of the orders 116may be associated with order parameters that specify an address for apickup location and an address for a delivery location, whereas therouting engine 130 may be configured to generate routes based ongeographic coordinate data (e.g., latitude/longitude coordinates). Inthe present example, the routing management system 102 can submit thegeographic coordinate request 124 to the geocoding engine 120, includingthe pickup location and delivery location addresses for each of theorders 116. The geocoding engine can then determine correspondinggeographic coordinates 126 for each of the pickup locations and deliverylocations for each of the orders, and can provide the geographiccoordinates 126 to the routing management system 102.

Routing constraints can be identified (208). The routing constraints,for example, can include a number of available drivers, available shifttimes for the drivers, a maximum number of orders for each driver,acceptable geographic zones for each driver, capabilities associatedwith each driver (e.g., product transportation and/or installationcapabilities) and other appropriate routing constraints.

Selected orders, order parameters, delivery constraints, and routingconstraints can be provided to a routing engine (210). For example, therouting management system 102 can provide delivery information 134 tothe routing engine 130. The delivery information 134, for example, caninclude parameters associated with the orders 116, correspondinggeographic coordinates 126 for pickup location and delivery locationaddresses for the orders 116, delivery constraints associated with theorders 116, and routing constraints associated with one or more carriersthat may be selected for performing delivery of the orders 116.

One or more delivery routes are generated and returned (212). Forexample, the routing management system 102 can receive route information136 that includes one or more routes for fulfilling the orders 116, fromthe routing engine 130. Each route specified by the route information136, for example, can identify a sequence of stops for a driver to maketo fulfill a subset of orders that have been assigned to the route (orto fulfill all orders if multiple routes are not necessary). Optionally,each route can indicate target arrival and departure times from eachstop, and a path/turn-by-turn directions to navigate between each stop.The routing engine 130, for example, can attempt to satisfy as manydelivery constraints associated with the orders 116 as possible, whilecomplying with the routing constraints that limit the capacity fordelivering the orders 116.

FIG. 3 is a flowchart of an example technique 300 for obtaining deliveryroutes in accordance with an adjusted request. The example technique 300can be performed by any of a variety of appropriate systems, such as thesystem 100 (shown in FIG. 1).

A request to route a batch of orders is generated, and the request istransmitted to a routing engine (302). Referring to FIG. 1, for example,the routing management system 102 can generate and provide a request tothe routing engine 130, the request including delivery information 134for the orders 116. For example, the routing management system 102 canrequest that the routing engine 130 provide one or more routes for theorders 116 that are to be delivered to customers' residences on aparticular day. The orders 116 can be provided to the routing engine130, for example, along with routing constraints manually set by asystem user or automatically set by default or according to analgorithm. The routing constraints, for example, may specify that aparticular number of drivers are available during the particular day todeliver the orders 116.

An error indicator may be received from the routing engine (304). Forexample, the routing engine 130 can process delivery information 134including the routing constraints, can determine whether the orders 116are capable of being fulfilled, given the order parameters, deliveryconstraints, and routing constraints, and can provide an error indicator(e.g., a code) to the routing management system 102 when the orders 116are incapable of being fulfilled. In the present example, the routingengine 130 may determine that the particular number of available driversare insufficient for fulfilling the orders 116, such that the driversare unable to complete the deliveries within their available shift timeswhile satisfying the delivery constraints for the orders (e.g., thedelivery time windows for the orders).

In some implementations, information associated with the error indicatormay be presented to a system user as an alert. For example, the routingmanagement system 102 can present an alert using the peripheral device104 (e.g., a display) that prompts the system user to relax deliveryconstraints for one or more of the orders 116 and/or prompts the systemuser that additional capacity is needed (e.g., additional drivers and/orincreased driver shift times) in order to fulfill the orders.

One or more adjustments can be determined for the request (306). Inresponse to the error indicator, for example, the routing managementsystem 102 can adjust the request to route the orders 116, includingadjusting one or more of the order constraints, and/or routingconstraints. Adjusting the order constraints, for example, can includeremoving one or more orders from the request (e.g., orders that areassociated with a low priority level), modifying a delivery time windowfor one or more orders (e.g., increasing and/or shifting the timewindow), and other suitable adjustments that would lead to fulfillmentof the orders. Adjusting the routing constraints, for example, caninclude increasing a number of available drivers, increasing drivershift times, and other suitable adjustments that would lead tofulfillment of the orders.

An adjusted request is transmitted to the routing engine (308). Afteradjusting the order constraints and/or the routing constraints for theorders 116, for example, the routing management system 102 can transmitthe adjusted request for routes to the routing engine 130, the adjustedrequest including adjusted delivery information 134 for the orders 116.In the present example, the adjusted delivery information 134 canindicate that orders that are associated with a low priority level areremoved from the request, and driver shift times are increased.

Delivery routes are obtained in accordance with the adjusted request(310). For example, the routing management system 102 can receive routeinformation 136 from the routing engine 130, given the adjusted orderconstraints and/or adjusted routing constraints. In the present example,adjusting the constraints has resulted in the routing engine 130determining one or more routes for fulfilling the orders 116, without anerror.

Delivery routes may be presented to a user, and adjustments may beflagged (312). For example, the routing management system 102 canpresent route information 136 using the peripheral device 104 (e.g., adisplay device), and can flag adjustments to the order constraintsand/or the routing constraints. In the present example, the routingmanagement system 102 can flag that orders that are associated with alow priority level are not included in any generated routes, and thatdriver shift times have been increased.

FIG. 4 is a flowchart of an example technique 400 for generatingmodified delivery routes. The example technique 400 can be performed byany of a variety of appropriate systems, such as the system 100 (shownin FIG. 1).

In general, routes may be initially generated by selecting a group oforders, identifying delivery constraints (e.g., order and/or routingconstraints) for each order in the group of orders, providing datarepresenting the group of orders and the delivery constraints to arouting engine, and obtaining delivery routes from the routing engine.For example, a first delivery route and a second delivery route can eachbe obtained from the routing engine 130, the first and second deliveryroutes each being generated by the routing engine 130 using the datarepresenting the group of orders 116 and the delivery constraints forthe respective routes (e.g., the delivery information 134). Routes maybe initially generated, for example, using the technique 200 forgenerating delivery routes described above with respect to FIG. 2 and/orusing the technique 300 for obtaining delivery routes in accordance withan adjusted request described above with respect to FIG. 3.

A first delivery route corresponding to a first geographic region and asecond delivery route corresponding to a second geographic region areidentified (402). Referring now to FIG. 5, for example, an examplemapping 500 of delivery route information is shown. As shown in FIG. 5,for example, a first delivery route 520 can include an initial pickuplocation 522 and delivery stops at multiple locations 526 and 528 withina first geographic region 510. A second delivery route 540, for example,can include an initial pickup location 542 and delivery stops atmultiple locations 546 and 548 within a second geographic region 530.The first geographic region 510 and the second geographic region 530,for example, can be adjacent to each other and can be separated by aborder (e.g., a natural or artificial separator of regions). In thepresent example, the first geographic region 510 and the secondgeographic region 530 are separated by border 550 (e.g., a river).

The first delivery route can be assigned to a first carrier that servesthe first geographic region, and the second delivery route can beassigned to a second carrier that serves the second geographic region(404). Referring to FIG. 1, for example, the first carrier (e.g., acarrier that employs the carrier computing system 140 a) can bedesignated by the routing management system 102 to deliver orders withinthe first geographic region 510, and the second carrier (e.g., a carrierthat employs the carrier computing system 140 b) can be designated bythe routing management system 102 to deliver orders within the secondgeographic region 530.

An additional order to be delivered within the first geographic regioncan be identified while the first and second delivery routes are inprogress (406). Referring again to FIG. 5, for example, while the firstcarrier is performing the first delivery route 520 (e.g., as indicatedby a current location 524 of a driver for the first carrier) and thesecond carrier is performing the second delivery route 540 (e.g., asindicated by a current location 544 of a driver for the second carrier),the additional order can be requested to be delivered within the firstgeographic region 510. Current locations of carrier drivers, forexample, can be determined by Global Positioning System (GPS) devicescarried by drivers and/or vehicles. In the present example, theadditional order can be received by the routing management system 102,and can specify that goods are to be delivered to location 560 in thefirst geographic region 510.

Costs of modifying the first and second delivery routes to include anadditional delivery stop for the additional order are compared (408).For example, the routing management system 102 can determine that a costof modifying the second delivery route 540 to include the additionaldelivery stop for the additional order (e.g., a stop at the location560) is less than a cost of modifying the first delivery route 520 toinclude the additional delivery stop for the additional order.

In some implementations, the cost of modifying the first delivery routemay be determined by simulating a modified version of the first deliveryroute that incorporates the additional delivery stop for the additionalorder, and the cost of modifying the second delivery route may bedetermined by simulating a modified version of the second delivery routethat incorporates the additional delivery stop for the additional order.For example, the routing management system 102 can provide a firstrequest to the routing engine 130 for a first modified route that addsthe additional delivery stop at the location 560 to the first deliveryroute 520, and can provide a second request to the routing engine 130for a second modified route that adds the additional delivery stop atthe location 560 to the second delivery route 540. The routingmanagement system 102 can then perform a simulation for each of themodified routes, and based on the simulations, determine a cost ofmodifying each respective route. Moreover, while only two routes 520 and540 have been discussed in this particular example, it should beunderstood that the routing management system 102 may simulate deliveryroute modifications and predict costs of the modifications for anynumber of routes that have previously been generated and/or that arecurrently being performed and are partially completed. In someinstances, the routing management system 102 may simulate delivery routemodifications and predict costs for all existing routes.

In some implementations, determining the cost of modifying the firstdelivery route may include comparing at least one characteristic of thefirst delivery route to at least one characteristic of the modifiedversion of the first delivery route, and determining the cost ofmodifying the second delivery route may include comparing at least onecharacteristic of the second delivery route to at least onecharacteristic of the modified version of the second delivery route. Forexample, the routing management system 102 can compare travel distancesand travel times for the first delivery route 520 and the modifiedversion of the route 520 to determine a cost of modifying the route 520.Similarly, the routing management system 102, for example, can comparetravel distances and travel times for the second delivery route 540 andthe modified version of the route 540 to determine a cost of modifyingthe route 540. Travel times and distances may change, for example, as aresult of picking up an additional order for delivery and thencompleting the delivery during a stop at the destination for the order.The system 102 may also determine a cost of modifying a route based onmetrics indicating the impact on delivery constraints for existingorders and the ability to meet delivery constraints for an order that isproposed to be added to a route. For instance, the system 102 may imposea penalty cost if adding an order to a route causes delay in delivery ofexisting orders on the route, or if the new order cannot be deliveredaccording to its specified constraints (e.g. within a promised deliverywindow).

In some implementations, determining that the cost of modifying thesecond delivery route to include the additional delivery stop for theadditional order is less than the cost of modifying the first deliveryroute to include the additional delivery stop for the additional ordermay include comparing at least one characteristic of the modifiedversion of the first delivery route to at least one characteristic ofthe modified version of the second delivery route. For example, therouting management system 102 can compare travel distances and traveltimes for the modified version of the first delivery route 520 andtravel distances and travel times for the modified version of the seconddelivery route 540.

In some implementations, determining the cost of modifying the seconddelivery route may include identifying that a pickup location for theadditional order or the delivery location for the additional order isoutside the second geographic region for which the second carrier isdesignated, and applying a penalty to the cost of modifying the seconddelivery route. In the present example, the routing management system102 can determine that the location 560 of the additional delivery stopis outside of the second geographic region 530, whereas the pickuplocation 542 is within the second geographic location. Applying thepenalty, for example, can be a result of the pickup location 542 for theadditional order and/or the delivery location 560 for the additionalorder being outside the second geographic region 530 for which thesecond carrier is designated. As another example, applying the penaltycan be a result of the second delivery route 540 being assigned to thesecond carrier. The penalty, for example, can be an absolute orpercentage cost penalty.

In some implementations, determining the cost of modifying the firstdelivery route may include identifying that a pickup location for theadditional order or the delivery location for the additional order iswithin the first geographic region for which the first carrier isdesignated, and applying a reduction to the cost of modifying the firstdelivery route. In the present example, the routing management system102 can determine that the location 560 of the additional delivery stopis within the geographic region 510, as is the pickup location 522.Applying the reduction, for example, can be a result of the pickuplocation 522 for the additional order and/or the delivery location 560for the additional order being within the first geographic region 510for which the first carrier is designated. As another example, applyingthe reduction can be a result of the first delivery route 520 beingassigned to the first carrier. The reduction, for example, can be anabsolute or percentage reduction.

In some implementations, the cost of modifying a delivery route can bebased at least on an increase in distance of the delivery route thatresults from including the additional delivery stop, an increase intravel time for the delivery route that results from including theadditional delivery stop, or an expected increase in charges from thecarrier that results from including the additional delivery stop. Forexample, the cost of modifying the first delivery route 520 can be basedon an increase in distance of the first delivery route 520 and anincrease in travel time that results from including an additionaldelivery stop at the location 560, and an expected increase in chargesfrom the first carrier (e.g., charges resulting from driver overtime orother circumstances).

In some implementations, the cost of modifying a delivery route can bebased at least in part on a distance between a point along a deliveryroute and a pickup location or delivery location for the additionalorder. For example, the cost of modifying the first delivery route 520can be based on a distance between the current location 524 of thedriver for the first carrier, the pickup location 522, and the location560 of the additional stop. In order to fulfill the additional order,for example, the driver for the first carrier may need to return to thepickup location 522.

In some implementations, the cost of modifying a delivery route can bebased at least in part on a carrier's ability to meet deliveryconstraints associated with other orders on the first delivery route.For example, the cost of modifying the first delivery route 520 can bebased on the first carrier's ability to meet delivery constraintsassociated with delivery of orders at each of the stops at locations 526and 528, in addition to the additional stop at location 560. Failure tomeet delivery constraints, for example, may result in additional costsand/or penalties for fulfilling the delivery route 520.

A modified first or second delivery route is generated, based on whichmodification is associated with a lower cost (410). In the presentexample, in response to determining that the cost of modifying thesecond delivery route 540 to include the additional delivery stop atlocation 560 for the additional order is less than the cost of modifyingthe first delivery route 520 to include the additional delivery stop atlocation 560 for the additional order, the routing management system 102can modify the second delivery route 540 to include the additionaldelivery stop for the additional order. Modifying the second deliveryroute 540, for example, can include assigning the additional order tothe second carrier even though the second carrier is designated todeliver orders within the second geographic region 530 rather than thefirst geographic region 510.

Either the first carrier may be instructed to perform a modified firstdelivery route, or the second carrier may be instructed to perform amodified second delivery route (412). In the present example, therouting management system 102 provides the modified second deliveryroute to the second carrier (e.g., the carrier that employs the carriercomputing system 140 b).

FIG. 6 is a flowchart of an example technique 600 for transmitting andmanaging delivery route information. The example technique 600 can beperformed by any of a variety of appropriate systems, such as the system100 (shown in FIG. 1).

A batch of delivery routes is identified (602). A first computing systemcorresponding to a first entity, for example, can receive datarepresenting a plurality of delivery routes, each delivery routecomprising a sequence of scheduled delivery stops at locations within ageographic region, each delivery stop corresponding to one or moreorders that are scheduled for delivery. In the present example, therouting management system 102 can receive route information 136 from therouting engine 130 corresponding to the orders 116.

In some implementations, receiving the data representing the pluralityof delivery routes may include selecting a group of orders, identifyingdelivery constraints for each order in the group of orders, providingdata representing the group of orders and the delivery constraints to arouting engine, and obtaining the data representing the plurality ofdelivery route from the routing engine. For example, the routing engine130 can generate a plurality of delivery routes based on the deliverydata 134 representing the group of orders 116 and the associateddelivery constraints. Routes may be generated, for example, using thetechnique 200 for generating delivery routes described above withrespect to FIG. 2 and/or using the technique 300 for obtaining deliveryroutes in accordance with an adjusted request described above withrespect to FIG. 3, and/or may be modified using the technique 400described above with respect to FIG. 4.

The batch of delivery routes can be classified into a set of groups ofdelivery routes based on one or more criteria (604). For example, therouting management system 102 can classify the plurality of deliveryroutes into a plurality of groups of delivery routes. At least one ofthe plurality of groups of delivery routes may include multiple deliveryroutes from the plurality of delivery routes, for example.

In some implementations, classifying the plurality of delivery routesinto the plurality of groups of delivery routes may include groupingdelivery routes based on distances between locations of at least some ofthe scheduled delivery stops in the delivery routes. For example, therouting management system 102 can form groups that minimize thedistances between locations of at least some of the scheduled deliverystops among the delivery routes in each group. As another example, therouting management system 102 can form groups that maximize thedistances between locations of at least some of the scheduled deliverystops among the delivery routes in each group.

At least one group of delivery routes can be assigned to each ofmultiple carriers (606). For example, each group of delivery routes canbe assigned to a respective carrier entity, at least two groups from theplurality of groups of delivery routes being assigned to differentcarrier entities. In the present example, the route management system102 can assign a first group of delivery routes to a first carrierentity that employs carrier computing system 140 a, and can assign asecond group of delivery routes to a second carrier entity that employscarrier computing system 140 b.

In some implementations, delivery routes may be selected for inclusionin a group of delivery routes that is assigned to a carrier entity basedon at least one of a capacity of the carrier entity, a geographic regionthat the carrier entity is designated to service, or a cost of thecarrier entity's delivery services. For example, the route managementsystem 102 can select delivery routes for inclusion in the first groupof delivery routes based on the first carrier entity having capacity toservice the routes (e.g., based on a number of drivers employed by thecarrier entity and/or driver shift times). As another example, the routemanagement system 102 can select delivery routes for inclusion in thefirst group of delivery routes based on the first carrier entityservicing a geographic region that includes pickup locations and/ordelivery stops along the delivery routes. As another example, the routemanagement system 102 can select delivery routes for inclusion in thefirst group of delivery routes based on the first carrier entity havinglower delivery costs relative to other carrier entities.

In some implementations, delivery routes may be selected for inclusionin a group of delivery routes that is assigned to a carrier entity basedon distances between one or more pickup and/or delivery locations in theselected delivery routes and a location associated with the carrierentity. For example, each carrier entity may be associated with one ormore carrier entity locations, including current locations of vehiclesof the carrier entity and/or dispatching stations of the carrierentities. If a carrier entity location of the first carrier entity iswithin a predetermined distance of one or more pickup and/or deliverylocations in the selected delivery routes, for example, the routemanagement system 102 may select the delivery routes for inclusion inthe first group of delivery routes.

Data representing each group of delivery routes is transmitted to thecorresponding carrier assigned to the group of delivery routes (608).Respective portions of the data representing the plurality of deliveryroutes can be transmitted from the first computing system, for example,to corresponding second computing systems of the carrier entitiesassigned to the group of delivery routes. In the present example, therouting management system 102 can transmit portions of the datarepresenting the first group of delivery routes to the carrier computingsystem 140 a of the first carrier entity, and can transmit portions ofthe data representing the second group of delivery routes to the carriercomputing system 140 b of the second carrier entity.

The carriers can manage dispatching routes to individual drivers (610).For example, the carrier computing system 140 a can manage dispatchingof routes through the driver devices 142 a and 144 a, and the carriercomputing system 140 b can manage dispatching of routes through thedriver devices 142 b and 144 b.

In some implementations, a carrier entity that has been assigned a groupof delivery routes can dispatch individual delivery routes in the groupof delivery routes to individual drivers to execute the individualdelivery routes. For example, the individual drivers that use therespective driver devices 142 a and 144 a can be employees orcontractors for the carrier entity that employs the carrier computingsystem 140 a, and can be independent of an entity that employs therouting management system 102.

In some implementations, a carrier entity that has been assigned a groupof delivery routes can provide representations of delivery routes fromthe group for display in a graphical user interface to permit driversassociated with the carrier entity to self-select delivery routes toassign themselves. For example, the carrier computing system 140 a canprovide data associated with each of the routes included in the firstgroup of delivery routes to each of the driver devices 142 a and 144 a.In the present example, route information is shown for display by theinterface 150 presented by the driver device 142 a (e.g., Routes A, B,and C). A user of the driver device 142 a can select one or more of thepresented routes, for example. In response to the user selection, anindication of the selection can be provided to the carrier computingsystem 140 a, and route information corresponding to the selected routecan be removed from other devices associated with the carrier computingsystem 140 a (e.g., the driver device 144 a).

Embodiments of the subject matter and the functional operationsdescribed in this specification can be implemented in digital electroniccircuitry, in tangibly-embodied computer software or firmware, incomputer hardware, including the structures disclosed in thisspecification and their structural equivalents, or in combinations ofone or more of them. Embodiments of the subject matter described in thisspecification can be implemented as one or more computer programs, i.e.,one or more modules of computer program instructions encoded on atangible non-transitory program carrier for execution by, or to controlthe operation of, data processing apparatus. Alternatively or inaddition, the program instructions can be encoded on anartificially-generated propagated signal, e.g., a machine-generatedelectrical, optical, or electromagnetic signal, that is generated toencode information for transmission to suitable receiver apparatus forexecution by a data processing apparatus. The computer storage mediumcan be a machine-readable storage device, a machine-readable storagesubstrate, a random or serial access memory device, or a combination ofone or more of them.

The term “data processing apparatus” refers to data processing hardwareand encompasses all kinds of apparatus, devices, and machines forprocessing data, including by way of example a programmable processor, acomputer, or multiple processors or computers. The apparatus can also beor further include special purpose logic circuitry, e.g., an FPGA (fieldprogrammable gate array) or an ASIC (application-specific integratedcircuit). The apparatus can optionally include, in addition to hardware,code that creates an execution environment for computer programs, e.g.,code that constitutes processor firmware, a protocol stack, a databasemanagement system, an operating system, or a combination of one or moreof them.

A computer program, which may also be referred to or described as aprogram, software, a software application, a module, a software module,a script, or code, can be written in any form of programming language,including compiled or interpreted languages, or declarative orprocedural languages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, or other unitsuitable for use in a computing environment. A computer program may, butneed not, correspond to a file in a file system. A program can be storedin a portion of a file that holds other programs or data, e.g., one ormore scripts stored in a markup language document, in a single filededicated to the program in question, or in multiple coordinated files,e.g., files that store one or more modules, sub-programs, or portions ofcode. A computer program can be deployed to be executed on one computeror on multiple computers that are located at one site or distributedacross multiple sites and interconnected by a communication network.

The processes and logic flows described in this specification can beperformed by one or more programmable computers executing one or morecomputer programs to perform functions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit).

Computers suitable for the execution of a computer program include, byway of example, general or special purpose microprocessors or both, orany other kind of central processing unit. Generally, a centralprocessing unit will receive instructions and data from a read-onlymemory or a random access memory or both. The essential elements of acomputer are a central processing unit for performing or executinginstructions and one or more memory devices for storing instructions anddata. Generally, a computer will also include, or be operatively coupledto receive data from or transfer data to, or both, one or more massstorage devices for storing data, e.g., magnetic, magneto-optical disks,or optical disks. However, a computer need not have such devices.Moreover, a computer can be embedded in another device, e.g., a mobiletelephone, a personal digital assistant (PDA), a mobile audio or videoplayer, a game console, a Global Positioning System (GPS) receiver, or aportable storage device, e.g., a universal serial bus (USB) flash drive,to name just a few.

Computer-readable media suitable for storing computer programinstructions and data include all forms of non-volatile memory, mediaand memory devices, including by way of example semiconductor memorydevices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks,e.g., internal hard disks or removable disks; magneto-optical disks; andCD-ROM and DVD-ROM disks. The processor and the memory can besupplemented by, or incorporated in, special purpose logic circuitry.

To provide for interaction with a user, embodiments of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube) or LCD (liquidcrystal display) monitor, for displaying information to the user and akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input. In addition, a computer can interact with a user bysending documents to and receiving documents from a device that is usedby the user; for example, by sending web pages to a web browser on auser's device in response to requests received from the web browser.

Embodiments of the subject matter described in this specification can beimplemented in a computing system that includes a back-end component,e.g., as a data server, or that includes a middleware component, e.g.,an application server, or that includes a front-end component, e.g., aclient computer having a graphical user interface or a Web browserthrough which a user can interact with an implementation of the subjectmatter described in this specification, or any combination of one ormore such back-end, middleware, or front-end components. The componentsof the system can be interconnected by any form or medium of digitaldata communication, e.g., a communication network. Examples ofcommunication networks include a local area network (LAN) and a widearea network (WAN), e.g., the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other. In someembodiments, a server transmits data, e.g., an HTML page, to a userdevice, e.g., for purposes of displaying data to and receiving userinput from a user interacting with the user device, which acts as aclient. Data generated at the user device, e.g., a result of the userinteraction, can be received from the user device at the server.

An example of one such type of computer is shown in FIG. 7, which showsa schematic diagram of a computer system 700. The system 700 can be usedfor the operations described in association with any of thecomputer-implement methods described previously, according to someimplementations. The system 700 includes a processor 710, a memory 720,a storage device 730, and an input/output device 740. Each of thecomponents 710, 720, 730, and 740 are interconnected using a system bus750. The processor 710 is capable of processing instructions forexecution within the system 700. In one implementation, the processor710 is a single-threaded processor. In another implementation, theprocessor 710 is a multi-threaded processor. The processor 710 iscapable of processing instructions stored in the memory 720 or on thestorage device 730 to display graphical information for a user interfaceon the input/output device 740.

The memory 720 stores information within the system 700. In oneimplementation, the memory 720 is a computer-readable medium. In oneimplementation, the memory 720 is a volatile memory unit. In anotherimplementation, the memory 720 is a non-volatile memory unit.

The storage device 730 is capable of providing mass storage for thesystem 700. In one implementation, the storage device 730 is acomputer-readable medium. In various different implementations, thestorage device 730 may be a floppy disk device, a hard disk device, anoptical disk device, or a tape device.

The input/output device 740 provides input/output operations for thesystem 700. In one implementation, the input/output device 740 includesa keyboard and/or pointing device. In another implementation, theinput/output device 740 includes a display unit for displaying graphicaluser interfaces.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anyinvention or on the scope of what may be claimed, but rather asdescriptions of features that may be specific to particular embodimentsof particular inventions. Certain features that are described in thisspecification in the context of separate embodiments can also beimplemented in combination in a single embodiment. Conversely, variousfeatures that are described in the context of a single embodiment canalso be implemented in multiple embodiments separately or in anysuitable subcombination. Moreover, although features may be describedabove as acting in certain combinations and even initially claimed assuch, one or more features from a claimed combination can in some casesbe excised from the combination, and the claimed combination may bedirected to a subcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various system modulesand components in the embodiments described above should not beunderstood as requiring such separation in all embodiments, and itshould be understood that the described program components and systemscan generally be integrated together in a single software product orpackaged into multiple software products.

As used throughout this document, the terms optimum, optimize, andvariations thereof refer to improving performance of a system throughthe use of the techniques discussed herein, and does not imply that theperformance obtained is necessarily the most optimum performance that isachievable.

Particular embodiments of the subject matter have been described. Otherembodiments are within the scope of the following claims. For example,the actions recited in the claims can be performed in a different orderand still achieve desirable results. As one example, the processesdepicted in the accompanying figures do not necessarily require theparticular order shown, or sequential order, to achieve desirableresults. In some cases, multitasking and parallel processing may beadvantageous.

What is claimed is:
 1. A computer-implemented method for managing andtransmitting delivery route information, the method comprising:receiving, by a routing management system, data representing a pluralityof delivery routes, each delivery route comprising a sequence ofscheduled delivery stops at locations within a geographic region, eachdelivery stop corresponding to one or more orders that are scheduled fordelivery; classifying the plurality of delivery routes into a pluralityof groups of delivery routes based on one or more criteria, wherein atleast one of the plurality of groups of delivery routes includesmultiple delivery routes from the plurality of delivery routes;assigning each group of delivery routes to a respective carrier entity,at least two groups from the plurality of groups of delivery routesbeing assigned to different carrier entities; and transmitting, from therouting management system, respective portions of the data representingthe plurality of delivery routes to corresponding carrier computingsystems of the carrier entities assigned to the group of deliveryroutes, wherein a first carrier entity that has been assigned a firstgroup of delivery routes forwards individual delivery routes in thefirst group of delivery routes to driver devices of individual driversto execute the individual delivery routes.
 2. The computer-implementedmethod of claim 1, wherein classifying the plurality of delivery routesinto the plurality of groups of delivery routes comprises groupingdelivery routes based on distances between locations of at least some ofthe scheduled delivery stops in the delivery routes.
 3. Thecomputer-implemented method of claim 2, wherein classifying theplurality of delivery routes into the plurality of groups of deliveryroutes comprises forming groups that minimize the distances betweenlocations of the at least some of the scheduled delivery stops among thedelivery routes in each group.
 4. The computer-implemented method ofclaim 2, wherein classifying the plurality of delivery routes into theplurality of groups of delivery routes comprises forming groups thatmaximize the distances between locations of the at least some of thescheduled delivery stops among the delivery routes in each group.
 5. Thecomputer-implemented method of claim 1, comprising selecting deliveryroutes for inclusion in a first group of delivery routes that isassigned to the first carrier entity based on at least one of a capacityof the first carrier entity, a first geographic region that the firstcarrier entity is designated to service, or a cost of delivery servicesof the first carrier entity.
 6. The computer-implemented method of claim1, comprising selecting delivery routes for inclusion in the first groupof delivery routes that is assigned to the first carrier entity based ondistances between one or more pickup or delivery locations in theselected delivery routes to a location associated with the first carrierentity.
 7. The computer-implemented method of claim 1, wherein receivingthe data representing the plurality of delivery routes comprises:selecting a group of orders; identifying delivery constraints for eachorder in the group of orders; providing data representing the group oforders and the delivery constraints to a routing engine; and obtainingthe data representing the plurality of delivery route from the routingengine, wherein the routing engine generates the plurality of deliveryroutes using the data representing the group of orders and the deliveryconstraints.
 8. The computer-implemented method of claim 1, wherein asecond carrier entity that has been assigned a second group of deliveryroutes provides representations of delivery routes from the second groupfor display in a graphical user interface to permit drivers associatedwith the second carrier entity to self-select delivery routes to assignthemselves.
 9. The computer-implemented method of claim 1, wherein theindividual drivers are employees or contractors for the first carrierentity, and the individual drivers are independent of the first carrierentity.
 10. One or more non-transitory computer-readable media havinginstructions stored thereon that, when executed by one or moreprocessors of a computing system, cause the computing system to performoperations for managing and transmitting delivery route information, theoperations comprising: receiving, by a routing management system, datarepresenting a plurality of delivery routes, each delivery routecomprising a sequence of scheduled delivery stops at locations within ageographic region, each delivery stop corresponding to one or moreorders that are scheduled for delivery; classifying the plurality ofdelivery routes into a plurality of groups of delivery routes based onone or more criteria, wherein at least one of the plurality of groups ofdelivery routes includes multiple delivery routes from the plurality ofdelivery routes; assigning each group of delivery routes to a respectivecarrier entity, at least two groups from the plurality of groups ofdelivery routes being assigned to different carrier entities; andtransmitting, from the routing management system, respective portions ofthe data representing the plurality of delivery routes to correspondingcarrier computing systems of the carrier entities assigned to the groupof delivery routes, wherein a first carrier entity that has beenassigned a first group of delivery routes forwards individual deliveryroutes in the first group of delivery routes to driver devices ofindividual drivers for execution of the individual delivery routes. 11.The non-transitory computer-readable media of claim 10, whereinclassifying the plurality of delivery routes into the plurality ofgroups of delivery routes comprises grouping delivery routes based ondistances between locations of at least some of the scheduled deliverystops in the delivery routes.
 12. The non-transitory computer-readablemedia of claim 10, the operations comprising selecting delivery routesfor inclusion in the first group of delivery routes that is assigned tothe first carrier entity based on at least one of a capacity of thefirst carrier entity, a first geographic region that the first carrierentity is designated to service, or a cost of delivery services of thefirst carrier entity.
 13. The non-transitory computer-readable media ofclaim 10, the operations comprising selecting delivery routes forinclusion in the first group of delivery routes that is assigned to thefirst carrier entity based on distances between one or more pickup ordelivery locations in the selected delivery routes to a locationassociated with the first carrier entity.
 14. The non-transitorycomputer-readable media of claim 10, wherein receiving the datarepresenting the plurality of delivery routes comprises: selecting agroup of orders; identifying delivery constraints for each order in thegroup of orders; providing data representing the group of orders and thedelivery constraints to a routing engine; and obtaining the datarepresenting the plurality of delivery route from the routing engine,wherein the routing engine generates the plurality of delivery routesusing the data representing the group of orders and the deliveryconstraints.
 15. A computer system comprising: one or more dataprocessing apparatuses including one or more processors, memory, andstorage devices storing instructions that, when executed, cause the oneor more processors to perform operations for managing and transmittingdelivery route information, the operations comprising: receiving, by arouting management system, data representing a plurality of deliveryroutes, each delivery route comprising a sequence of scheduled deliverystops at locations within a geographic region, each delivery stopcorresponding to one or more orders that are scheduled for delivery;classifying the plurality of delivery routes into a plurality of groupsof delivery routes based on one or more criteria, wherein at least oneof the plurality of groups of delivery routes includes multiple deliveryroutes from the plurality of delivery routes; assigning each group ofdelivery routes to a respective carrier entity, at least two groups fromthe plurality of groups of delivery routes being assigned to differentcarrier entities; and transmitting, from the routing management system,respective portions of the data representing the plurality of deliveryroutes to corresponding carrier computing systems of the carrierentities assigned to the group of delivery routes, wherein a firstcarrier entity that has been assigned a first group of delivery routesforwards individual delivery routes in the first group of deliveryroutes to driver devices of individual drivers for execution of theindividual delivery routes.
 16. The computer system of claim 15, whereinclassifying the plurality of delivery routes into the plurality ofgroups of delivery routes comprises grouping delivery routes based ondistances between locations of at least some of the scheduled deliverystops in the delivery routes.
 17. The computer system of claim 15, theoperations comprising selecting delivery routes for inclusion in thefirst group of delivery routes that is assigned to the first carrierentity based on at least one of a capacity of the first carrier entity,a first geographic region that the first carrier entity is designated toservice, or a cost of delivery services of the first carrier entity. 18.The computer system of claim 15, the operations comprising selectingdelivery routes for inclusion in the first group of delivery routes thatis assigned to the first carrier entity based on distances between oneor more pickup or delivery locations in the selected delivery routes toa location associated with the first carrier entity.
 19. The computersystem of claim 15, wherein receiving the data representing theplurality of delivery routes comprises: selecting a group of orders;identifying delivery constraints for each order in the group of orders;providing data representing the group of orders and the deliveryconstraints to a routing engine; and obtaining the data representing theplurality of delivery route from the routing engine, wherein the routingengine generates the plurality of delivery routes using the datarepresenting the group of orders and the delivery constraints.